package eSchool.DataLayer;

public abstract class DAOFactory {

  public static final int ACCESS = 1;
  //As seguintes linhas servem para explicar a possível utilização e futuras
  // possibilidades de desenvolvimento desta classe
  //public static final int ORACLE = 2;
  //public static final int SYBASE = 3;
  //...

  public abstract IAlunoDAO getAlunoDAO();
  public abstract IDocenteDAO getDocenteDAO();
  public abstract IFuncionarioDAO getFuncionarioDAO();
  public abstract IDisciplinaDAO getDisciplinaDAO();
  public abstract IAlunoInscritoDAO getAlunoInscritoDAO();
  public abstract IDisciplinaInscritoDAO getDisciplinaInscritoDAO();
  public abstract IUtilizadorDAO getUtilizadorDAO();
  public abstract IGrupoUtilizadoresDAO getGrupoUtilizadoresDAO();
  
  public static DAOFactory getDAOFactory(int whichFactory) {
 
    switch (whichFactory) {
      case ACCESS: 
          return new AccessDAOFactory();
      //case ORACLE    : 
      //    return new OracleDAOFactory();      
      //case SYBASE    : 
      //    return new SybaseDAOFactory();
      //...
      default: 
          return null;
    }
  }
}